In a flash memory system, memory locations are grouped together as blocks. Memory locations within the blocks are consumed as data is written to memory locations within the blocks. A data storage system may be used to map logical memory locations to physical memory locations within the blocks.
As data is deleted the storage space previously allocated for this data is flagged as “dirty” or invalid. When data is overwritten, or appended to, additional unallocated space is consumed and the space previously used may be flagged as dirty. Before the dirty space can be reused the entire block in which the dirty space resides must be erased. If there is still valid data within an erase block that data must first be moved to another block and all references to its location must be updated before an erase can be preformed.
Once this process has been completed the previously unusable dirty space is reclaimed as unallocated space available for reuse. This process of reclaiming dirty space within a block may be, depending upon the type of flash device employed, NOR/NAND, and the dynamics of the storage system itself, relatively time consuming, and has a negative effect on sustained write throughput performance especially as the data within a flash data storage system volume nears capacity such that dirtied space must be reclaimed before a write operation can be completed.